type +'a t

val return : 'a -> 'a t
val const : 'a -> 'a t
val map : 'a t -> f:('a -> 'b) -> 'b t
val map2 : 'a t -> 'b t -> f:('a -> 'b -> 'c) -> 'c t
val both : 'a t -> 'b t -> ('a * 'b) t
val ( >>| ) : 'a t -> ('a -> 'b) -> 'b t

val of_source : Source.t -> Source.value t
val time : int t

val dependencies : 'a t -> Source.t Base.Sequence.t
val sample : 'a t -> Source.State.t -> 'a
